import { initMixin } from './mixin.js'
import { ASSET_TYPES } from '../shared/constant.js'
import initAssetRegisters from './asset.js'
import initExtend from './initExtend.js'

/**
 * 注册Vue的全局方法 比如之前写的Vue.Mixin 和今天的Vue.extend Vue.component等
 */
export function initGlobalAPI(Vue) {
  Vue.options = Object.create(null)

  ASSET_TYPES.forEach((type) => {
    Vue.options[`${type}s`] = Object.create(null)
  })

  Vue.options._base = Vue //_base指向Vue

  initMixin(Vue)
  initExtend(Vue) // extend方法定义
  initAssetRegisters(Vue) //assets注册方法 包含组件 指令和过滤器
}
